import { Component, OnInit } from '@angular/core';
import {ResponseUtil} from '../../../util/response-util';
import {TableUtil} from '../../../util/table-util';
import {PageSubject} from '../../../util/page-subject';
import {Path} from '../../../portal/admin/admin-breadcrumb/breadcrumb';
import {DaVocsoriginService} from './da-vocsorigin.service';
import {DaAPI, DaFactorName} from '../da-constants';
import {MsgConstants} from '../../../constants/constants';
import {OneDialogService} from '../../../widgets/one-dialog/one-dialog.service';

declare var $;
declare var moment;

@Component({
  selector: 'app-da-vocsorigin',
  templateUrl: './da-vocsorigin.component.html',
  styleUrls: ['./da-vocsorigin.component.css']
})
export class DaVocsoriginComponent implements OnInit {

  // 数据格式
  timeDataType = 'hourData';
  timeDataFormat = 'YYYY-MM-DD HH:00:00';
  timeDataArr: Array<any> = [];
  // 表格格式
  tableType = 'class';
  tableHeaderType: Array<any> = [];
  // 日期选择
  startDate = new Date(moment().subtract(1, 'M').format('YYYY/MM/DD HH:00'));
  endDate =  new Date();
  // 站点
  siteCode = '';
  rangeCode = '';
  // 组分数据
  factorDataArr: Array<any> = [];
  factorDataObj: any = {};

  table: any;
  tableData: Array<any> = [];
  siteArr: Array<any> = [];

  /**
   * 禁用日期数组
   * @type {any[]}
   */
  disabledDate: Array<any> = [];

  constructor(
    private pageSubject: PageSubject,
    private tableUtil: TableUtil,
    private dialogService: OneDialogService,
    private responseUtil: ResponseUtil,
    private vocsoriginService: DaVocsoriginService
  ) { }

  ngOnInit() {
    this.pushPage();
    this.initData();
    this.getSiteData();
  }
  /**
   * 面包屑导航
   */
  pushPage() {
    const path = new Path('VOCs数据应用', '');
    this.pageSubject.pushPage('原始数据', '查询', path);
  }

  /**
   * 初始化数据
   */
  initData() {
    this.timeDataArr = [
      {'name': '小时', dataType: 'hourData', formatter: 'YYYY-MM-DD HH:00', mode: 'day', format: 'YYYY-MM-DD HH:00:00'},
      {'name': '日', dataType: 'dayData', formatter: 'YYYY-MM-DD', mode: 'day', format: 'YYYY-MM-DD 00:00:00'},
      // {'name': '月', dataType: 'monthData', formatter: 'YYYY-MM', mode: 'month', format: 'YYYY-MM-01 00:00:00'},
      // {'name': '年', dataType: 'yearData', formatter: 'YYYY', mode: 'month', format: 'YYYY-01-01 00:00:00'}
    ];
    this.tableHeaderType = [
      {name: '102组分', dataType: 'component'},
      {name: '14小类', dataType: 'class'},
      {name: '三大类', dataType: 'category'}
      ];
    // this.factorDataArr = [
    //   {
    //     'label': '非甲烷碳氢化合物',
    //     'children': [
    //       {
    //         'label': '高碳烯烃C6-C12',
    //         'children': [
    //           {
    //             'label': '1-己烯',
    //             'value': '1-Hexene_592-41-6',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'high-carbon-olefin',
    //         'checked': false
    //       },
    //       {
    //         'label': '低碳烷烃C2-C5',
    //         'children': [
    //           {
    //             'label': '乙烷',
    //             'value': 'Ethane_74-84-0',
    //             'checked': true
    //           },
    //           {
    //             'label': '丙烷',
    //             'value': 'Propane_74-98-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '正丁烷',
    //             'value': 'n-Butane_106-97-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '环戊烷',
    //             'value': 'Cyclopentane_287-92-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '异戊烷',
    //             'value': 'iso-Pentane_78-78-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '正戊烷',
    //             'value': 'n-Pentane_109-66-0',
    //             'checked': false
    //           },
    //           {
    //             'label': '异丁烷',
    //             'value': 'iso-Butane_75-28-5',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'light-alkanes',
    //         'checked': false
    //       },
    //       {
    //         'label': '炔烃',
    //         'children': [
    //           {
    //             'label': '乙炔',
    //             'value': 'Acetylene_74-86-2',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'alkyne',
    //         'checked': false
    //       },
    //       {
    //         'label': '高碳烷烃C6-C12',
    //         'children': [
    //           {
    //             'label': '2,4-二甲基戊烷',
    //             'value': '2,4-Dimethylpentane_108-08-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '十二烷',
    //             'value': 'n-Dodecane_112-40-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-甲基戊烷',
    //             'value': '2-Methylpentane_107-83-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-甲基己烷',
    //             'value': '2-Methylhexane_591-76-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-甲基庚烷',
    //             'value': '2-Methylheptane_592-27-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '辛烷',
    //             'value': 'n-Octane_111-65-9',
    //             'checked': false
    //           },
    //           {
    //             'label': '正庚烷',
    //             'value': 'n-Heptane_142-82-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '2,3-二甲基戊烷',
    //             'value': '2,3-Dimethylpentane_565-59-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '甲基环己烷',
    //             'value': 'Methylcyclohexane_108-87-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '甲基环戊烷',
    //             'value': 'Methylcyclopentane_96-37-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '2,3-二甲基丁烷',
    //             'value': '2,3-Dimethylbutane_79-29-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '3-甲基戊烷',
    //             'value': '3-Methylpentane_96-14-0',
    //             'checked': false
    //           },
    //           {
    //             'label': '2,3,4-三甲基戊烷',
    //             'value': '2,3,4-Trimethylpentane_565-75-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '3-甲基庚烷',
    //             'value': '3-Methylheptane_589-81-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '正壬烷',
    //             'value': 'Nonane_111-84-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '2,2-二甲基丁烷',
    //             'value': '2,2-Dimethylbutane_75-83-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '十一烷',
    //             'value': 'n-Undecane_1120-21-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '环己烷',
    //             'value': 'Cyclohexane_110-82-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '正癸烷',
    //             'value': 'n-Decane_124-18-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '2,2,4-三甲基戊烷',
    //             'value': '2,2,4-Trimethylpentane_540-84-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '3-甲基己烷',
    //             'value': '3-Methylhexane_589-34-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '正己烷',
    //             'value': 'n-Hexane_110-54-3',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'high-carbon-alkanes',
    //         'checked': false
    //       },
    //       {
    //         'label': '低碳烯烃C2-C5',
    //         'children': [
    //           {
    //             'label': '反-2-丁烯',
    //             'value': 'trans-2-butene_624-64-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,3-丁二烯',
    //             'value': '1,3-Butadiene_106-99-0',
    //             'checked': false
    //           },
    //           {
    //             'label': '1-戊烯',
    //             'value': '1-Pentene_109-67-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '乙烯',
    //             'value': 'Ethylene_74-85-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '反-2-戊烯',
    //             'value': 'trans-2-Pentene_646-04-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '丙烯',
    //             'value': 'Propylene_115-07-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '1-丁烯',
    //             'value': '1-Butene_106-98-9',
    //             'checked': false
    //           },
    //           {
    //             'label': '异戊二烯',
    //             'value': 'Isoprene_78-79-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '异丁烯',
    //             'value': 'Isobutene_115-11-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '顺-2-戊烯',
    //             'value': 'cis-2-Pentene_627-20-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '顺-2-丁烯',
    //             'value': 'cis-2-Butene_590-18-1',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'light-olefin',
    //         'checked': false
    //       },
    //       {
    //         'label': '苯系物',
    //         'children': [
    //           {
    //             'label': '邻二甲苯',
    //             'value': 'o-Xylene_95-47-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '苯乙烯',
    //             'value': 'Styrene_100-42-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '苯',
    //             'value': 'Benzene_71-43-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '异丙苯',
    //             'value': 'Isopropylbenzene_98-82-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '3-乙基甲苯',
    //             'value': 'm-Ethyltoluene_620-14-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,2,3-三甲基苯',
    //             'value': '1,2,3-Trimethylbenzene_526-73-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '间/对二甲苯',
    //             'value': 'm/p-Xylene_106-42-3/108-38-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,2,4-三甲基苯',
    //             'value': '1,2,4-Trimethylbenzene_95-63-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '甲苯',
    //             'value': 'Toluene_108-88-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '4-乙基甲苯',
    //             'value': 'p-Ethyltoluene_622-96-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,3-二乙基苯',
    //             'value': 'm-Diethylbenzene_141-93-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,4-二乙基苯',
    //             'value': 'p-Diethylbenzene_105-05-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-乙基甲苯',
    //             'value': 'o-Ethyltoluene_611-14-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '乙苯',
    //             'value': 'Ethylbenzene_100-41-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '正丙基苯',
    //             'value': 'n-Propylbenzene_103-65-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,3,5-三甲基苯',
    //             'value': '1,3,5-Trimethylbenzene_108-67-8',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'benzene',
    //         'checked': false
    //       }
    //     ],
    //     'value': 'non-methane-hydrocarbon',
    //     'checked': false
    //   },
    //   {
    //     'label': '含氧（氮）类VOCs',
    //     'children': [
    //       {
    //         'label': '酮类有机物',
    //         'children': [
    //           {
    //             'label': '3-戊酮',
    //             'value': '3-Pentanone_96-22-0',
    //             'checked': false
    //           },
    //           {
    //             'label': '丙酮',
    //             'value': 'Acetone_67-64-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-丁酮',
    //             'value': 'MethylEthylKetone_78-93-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-戊酮',
    //             'value': '2-Pentanone_107-87-9',
    //             'checked': false
    //           },
    //           {
    //             'label': '丁烯酮',
    //             'value': 'MethylVinylKetone_78-94-4',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'ketone-organics',
    //         'checked': false
    //       },
    //       {
    //         'label': '醛类有机物',
    //         'children': [
    //           {
    //             'label': '丙烯醛',
    //             'value': 'Acrolein_107-02-8',
    //             'checked': true
    //           },
    //           {
    //             'label': '戊醛',
    //             'value': 'Pentanal_110-62-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '正己醛',
    //             'value': 'Hexanal_66-25-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '丁醛',
    //             'value': 'n-Butanal_123-72-8',
    //             'checked': false
    //           },
    //           {
    //             'label': '2-甲基丙烯醛',
    //             'value': 'Methacrolein_78-85-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '丙醛',
    //             'value': 'Propanal_123-38-6',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'aldehydes',
    //         'checked': false
    //       },
    //       {
    //         'label': '醚类有机物',
    //         'children': [
    //           {
    //             'label': '甲基叔丁基醚',
    //             'value': 'MTBE_1634-04-4',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'ether-organics',
    //         'checked': false
    //       },
    //       {
    //         'label': '含氮有机物',
    //         'children': [
    //           {
    //             'label': '乙腈',
    //             'value': 'Acetonitrile_75-05-8',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'nitrogen-organics',
    //         'checked': false
    //       }
    //     ],
    //     'value': 'oxygen-nitrogen',
    //     'checked': false
    //   },
    //   {
    //     'label': '卤代烃类VOCs',
    //     'children': [
    //       {
    //         'label': '卤代烯烃',
    //         'children': [
    //           {
    //             'label': '反式-1,3-二氯丙烯',
    //             'value': 'trans-1,3-Dichloropropene_10061-02-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '四氯乙烯',
    //             'value': 'Tetrachloroethylene_127-18-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '顺-1,2-二氯乙烯',
    //             'value': 'cis-1,2-Dichloroethene_156-59-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '氯乙烯',
    //             'value': 'Vinylchloride_75-01-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '顺式-1,3-二氯丙烯',
    //             'value': 'cis-1,3-Dichloropropene_10061-01-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,1-二氯乙烯',
    //             'value': '1,1-Dichloroethene_75-35-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '三氯乙烯',
    //             'value': 'Trichloroethylene_79-01-6',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'halogenated-olefin',
    //         'checked': false
    //       },
    //       {
    //         'label': '卤代烷烃',
    //         'children': [
    //           {
    //             'label': '1,1,1-三氯乙烷',
    //             'value': '1,1,1-Trichloroethane_71-55-6',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,2-二溴乙烷',
    //             'value': '1,2-Dibromoethane_106-93-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '碘甲烷',
    //             'value': 'Methyliodide_74-88-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,1,2,2-四氯乙烷',
    //             'value': '1,1,2,2-Tetrachloroethane_79-34-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '氯甲烷',
    //             'value': 'Chloromethane_74-87-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '一溴二氯甲烷',
    //             'value': 'Bromodichloromethane_75-27-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '溴仿',
    //             'value': 'Bromoform_75-25-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '四氯化碳',
    //             'value': 'CarbonTetrachloride_56-23-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '溴甲烷',
    //             'value': 'Bromomethane_74-83-9',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,2-二氯乙烷',
    //             'value': '1,2-Dichloroethane_107-06-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,2-二氯丙烷',
    //             'value': '1,2-Dichloropropane_78-87-5',
    //             'checked': false
    //           },
    //           {
    //             'label': '二氯甲烷',
    //             'value': 'MethyleneChloride_75-09-2',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,1-二氯乙烷',
    //             'value': '1,1-Dichloroethane_75-34-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '三氯甲烷',
    //             'value': 'Chloroform_67-66-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '氯乙烷',
    //             'value': 'Chloroethane_75-00-3',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,1,2-三氯乙烷',
    //             'value': '1,1,2-Trichloroethane_79-00-5',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'haloalkanes',
    //         'checked': false
    //       },
    //       {
    //         'label': '卤代芳香烃',
    //         'children': [
    //           {
    //             'label': '1,3-二氯苯',
    //             'value': '1,3-Dichlorobenzene_541-73-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '1,4-二氯苯',
    //             'value': '1,4-Dichlorobenzene_106-46-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '邻二氯苯',
    //             'value': '1,2-Dichlorobenzene_95-50-1',
    //             'checked': false
    //           },
    //           {
    //             'label': '苄基氯',
    //             'value': 'BenzylChloride_100-44-7',
    //             'checked': false
    //           },
    //           {
    //             'label': '氯苯',
    //             'value': 'Chlorobenzene_108-90-7',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'aromatic-hydrocarbon',
    //         'checked': false
    //       },
    //       {
    //         'label': '氟利昂',
    //         'children': [
    //           {
    //             'label': '氟利昂114',
    //             'value': 'Freon-114_76-14-2',
    //             'checked': true
    //           },
    //           {
    //             'label': '氟利昂11',
    //             'value': 'Freon-11_75-69-4',
    //             'checked': false
    //           },
    //           {
    //             'label': '氟利昂113',
    //             'value': 'Freon-113_76-13-1',
    //             'checked': false
    //           }
    //         ],
    //         'value': 'freon',
    //         'checked': false
    //       }
    //     ],
    //     'value': 'halohydrocarbon',
    //     'checked': false
    //   }
    // ];
    this.tableData = [];
  }
  /**
   * 时间类型切换
   * @param timeData
   */
  timeDataChange(timeData) {
    if (this.timeDataType === timeData.dataType) {
      return false;
    }
    this.timeDataType = timeData.dataType;
    this.timeDataFormat = timeData.format;
    this.changeStartAndEndDate();
    this.search();
  }
  /**
   * 表格类型切换
   * @param tableType
   */
  tableTypeChange(tableType) {
    console.log(this.factorDataObj);
    if (this.tableType !== tableType && !this.factorDataObj.hasOwnProperty(tableType)) {
      this.tableType = tableType;
      this.getTableHeadData();
    } else {
      this.tableType = tableType;
      this.factorDataArr = this.factorDataObj[tableType];
      this.tableUtil.refreshOptions({columns: this.addColumns(), pageNumber: 1});
    }
  }

  /**
   * 日期选择
   */
  startValueChange = () => {
    // if (this.startDate > this.endDate) {
    //   this.startDate = null;
    //   this.dialogService.info('开始时间大于结束时间')
    // }
  };
  endValueChange = () => {
    // if (this.startDate > this.endDate) {
    //   this.endDate = null;
    //   this.dialogService.info('结束时间小于开始时间')
    // }
  };
  disabledStartDate = (startValue) => {
    if (!startValue || !this.endDate) {
      return false;
    }
    if (this.disabledDate.length > 0) {
      const isInRangeArr: Array<boolean> = [];
      let isInRange = false;
      this.disabledDate.forEach((val) => {
        const startTime = new Date(moment(val.startDate).format('YYYY/MM/DD 00:00:00'));
        const endTime = new Date(moment(val.endDate).format('YYYY/MM/DD 23:59:59'));
        isInRangeArr.push(startTime.getTime() <= startValue.getTime()  && startValue.getTime() <= endTime.getTime())
      });
      if (isInRangeArr.indexOf(true) !== -1) {
        isInRange = true;
      }
      return startValue.getTime() > Date.now() || startValue.getTime() > this.endDate.getTime() || !isInRange;
    } else {
      return startValue.getTime() > Date.now() || startValue.getTime() > this.endDate.getTime();
    }
  };
  disabledEndDate = (endValue) => {
    if (!endValue || !this.startDate) {
      return false;
    }
    const startDateTime =  new Date(moment(this.startDate).format('YYYY/MM/DD')).getTime();
    if (this.disabledDate.length > 0) {
      const isInRangeArr: Array<boolean> = [];
      let isInRange = false;
      this.disabledDate.forEach((val) => {
        const startTime = new Date(moment(val.startDate).format('YYYY/MM/DD 00:00:00'));
        const endTime = new Date(moment(val.endDate).format('YYYY/MM/DD 23:59:59'));
        isInRangeArr.push(startTime.getTime() <= endValue.getTime()  && endValue.getTime() <= endTime.getTime())
      });
      if (isInRangeArr.indexOf(true) !== -1) {
        isInRange = true;
      }
      return endValue.getTime() > Date.now() || endValue.getTime() < startDateTime || !isInRange;
    } else {
      return endValue.getTime() > Date.now() || endValue.getTime() < startDateTime;
    }
  };
  get showTimeParams() {
    if (this.timeDataType === 'hourData') {
      return {
        nzFormat: 'HH'
      }
    } else {
      return false;
    }
  }
  get timeFormatter() {
    let formatter = 'YYYY-MM-DD';
    this.timeDataArr.every( (val) => {
      if (val.dataType === this.timeDataType) {
        formatter = val.formatter;
      } else {
        return true;
      }
    });
    return formatter;
  }
  get timeMode() {
    let dataMode = 'day';
    this.timeDataArr.every( (val) => {
      if (val.dataType === this.timeDataType) {
        dataMode = val.mode;
      } else {
        return true;
      }
    });
    return dataMode;
  }
  /**
   * aa
   * @returns {any[]}
   */
  addColumns = () => {
    const colArr = [];
    // colArr.push({
    //   field: 'monitorTime',
    //   title: '时间',
    //   valign: 'middle',
    //   halign: 'center'
    // });
    this.factorDataArr.forEach((val) => {
      if (val.flag) {
        colArr.push({field: val.code, title: val.name, align: 'right'});
      } else {
        colArr.push({field: val.code, title: val.name, valign: 'middle', align: 'center'});
      }
      // if (this.tableType === 'category') {
      //   colArr.push({
      //     field: val.value,
      //     title: DaFactorName[val.value] || val.value,
      //     valign: 'middle',
      //     align: 'right'
      //   });
      // } else if (this.tableType === 'class') {
      //   val.children.forEach((factor) => {
      //     colArr.push({
      //       field: factor.value,
      //       title: DaFactorName[factor.value] || factor.value,
      //       align: 'right'
      //     })
      //   })
      // } else if (this.tableType === 'component') {
      //   val.children.forEach((factor) => {
      //     factor.children.forEach((origin) => {
      //       colArr.push({
      //         field: origin.value,
      //         title: DaFactorName[origin.value] || origin.value,
      //         align: 'right'
      //       })
      //     })
      //   })
      // }
    });
    return colArr
  };
  loadVocsOri() {
    this.table = this.tableUtil.load('one_table_pmorigin',  {
      columns: this.addColumns(),
      idField: 'id',
      sidePagination: 'server',
      pagination: true,
      pageNumber: 1,
      pageSize: 15,
      pageList: [10, 15, 50],
      paginationPreText: '上一页',
      paginationNextText: '下一页',
      singleSelect: false, // 多选
      clickToSelect: true, // 点击选中
      toolbar: '#one_operation_pmorigin',
      // data: this.tableData,
      url: DaAPI.vocOriData,
      method: 'get',
      // 传递附加参数
      queryParams: (params) => {
        params.siteCode = this.siteCode;
        params.rangeCode = this.rangeCode;
        params.type = this.tableType;
        params.dataType = this.timeDataType;
        params.tableDataType =  'tableData';
        // params.pageNum = params.offset ? (params.offset / params.limit) + 1 : 1;
        // params.pageCount = params.limit;
        params.startTime = this.startDate ? moment(this.startDate).format(this.timeDataFormat) : '';
        params.endTime = this.endDate ? moment(this.endDate).format(this.timeDataFormat) : '';
        return params;
      },
      // 返回数据处理器
      responseHandler: (result) => {
        return this.responseUtil.bsPageHandler(result, () => {
        });
      },
      height: 700, // table高度
      sortable: true,
      order: 'asc',
      classes: 'table table-hover',
      striped: true, // 隔行变色
      paginationLoop: false, // 是否开启循环分页
      mobileResponsive: true // 响应式
    });
  }
  search () {
    if (this.startDate > this.endDate) {
      this.dialogService.info('开始时间大于结束时间，请重新选择');
    } else {
      this.tableUtil.refreshOptions({columns: this.addColumns(), pageNumber: 1});
    }
  }
  /**
   * 格式化数据
   * @param value
   * @param row
   * @param index
   * @returns {string}
   */
  formatColor = (value, row, index) => {
    return '<div style="padding: 8px;background: ' + this.aqiColor(value) + ';"> ' + value + '</div>'
  };
  /**
   * 等级颜色
   * @param data
   * @returns {string}
   */
  aqiColor = (data) => {
    const num = parseFloat(data);
    if (!num) {
      return 'rgb(52,54,199)';
    }
    if (num === 1.00) {
      return 'rgba(240,72,100,0.85)';
    } else if (num > 0.50) {
      return 'rgba(250,204,20,0.85)';
    } else if (num > 0.00) {
      return 'rgba(47,194,91,0.85)';
    } else if (num > -0.50) {
      return 'rgba(24,144,255,0.85)';
    } else {
      return 'rgba(52,54,199,0.85)';
    }
  };
  /**
   * 获取站点数据
   */
  getSiteData = () => {
    this.vocsoriginService.getSiteData().subscribe(
      result => this.responseUtil.success(result, this.progressD),
      error => this.responseUtil.error(error)
    )
  };
  progressD = (result) => {
    if (result && result.code === MsgConstants.MSG_CODE_OK) {
      if (result.data && result.data.length > 0) {
        this.siteArr = result.data;
        this.siteCode = this.siteArr[0].SITECODE;
        this.rangeCode = this.siteArr[0].RANGECODE;
        this.changeSite(false);
      }
    } else {
      this.dialogService.info(result.message);
    }
    this.getTableHeadData();
  };
  changeSite = (isOpen) => {
    if (!isOpen) {
      if (this.rangeCode) {
        this.disabledDate = [];
        let site;
        this.siteArr.every((val) => {
          if (val.RANGECODE === this.rangeCode) {
            this.siteCode = val.SITECODE;
            site = val;
            return false
          } else {
            return true
          }
        });
        if (site.DATESTR && typeof site.DATESTR === 'string' ) {
          const dateArr = site.DATESTR.split(';');
          if (dateArr.length > 0) {
            dateArr.forEach((val) => {
              const singleDateArr = val.split(',');
              this.disabledDate.push({startDate: singleDateArr[0], endDate: singleDateArr[1]})
            });
            this.changeStartAndEndDate();
          }
        }
      } else {
        this.disabledDate = [];
      }
    }
  };
  /**
   * 修改开始结束时间
   */
  changeStartAndEndDate = () => {
    if (this.disabledDate.length > 0) {
      const dateLength = this.disabledDate.length;
      const dateObj = this.disabledDate[dateLength - 1];
      const startTime = new Date(moment(dateObj.startDate).format('YYYY/MM/DD 00:00:00'));
      const endTime = new Date(moment(dateObj.endDate).format('YYYY/MM/DD 00:00:00'));
      const nowDate =  new Date(moment().format('YYYY/MM/DD 00:00:00'));
      const nowDateIsInRange = startTime.getTime() < nowDate.getTime()  && nowDate.getTime() <= endTime.getTime();
      if (nowDateIsInRange) {
        this.endDate = new Date(moment().format('YYYY/MM/DD HH:00'));
        let startDate = new Date(moment(dateObj.startDate).format('YYYY/MM/DD HH:00'));
        if (this.timeDataType === 'hourData') {
          startDate = new Date(moment().subtract('1', 'd').format('YYYY/MM/DD HH:00'));
        } else if (this.timeDataType === 'dayData') {
          startDate = new Date(moment().subtract('1', 'w').format('YYYY/MM/DD HH:00'));
        } else if (this.timeDataType === 'weekData') {
          startDate = new Date(moment().subtract('1', 'M').format('YYYY/MM/DD HH:00'));
        }
        const startDateIsInRange = startTime.getTime() < startDate.getTime()  && startDate.getTime() < endTime.getTime();
        if (startDateIsInRange) {
          this.startDate = startDate;
        } else {
          this.startDate = new Date(moment(dateObj.startDate).format('YYYY/MM/DD HH:00'));
        }
      } else {
        this.startDate = new Date(moment(dateObj.startDate).format('YYYY/MM/DD HH:00'));
        let endDate = new Date(moment(dateObj.endDate).format('YYYY/MM/DD HH:00'));
        if (this.timeDataType === 'hourData') {
          endDate = new Date(moment(dateObj.startDate).add('1', 'd').format('YYYY/MM/DD HH:00'));
        } else if (this.timeDataType === 'dayData') {
          endDate = new Date(moment(dateObj.startDate).add('1', 'w').format('YYYY/MM/DD HH:00'));
        } else if (this.timeDataType === 'weekData') {
          endDate = new Date(moment(dateObj.startDate).add('1', 'M').format('YYYY/MM/DD HH:00'));
        }
        if (endDate.getTime() > new Date().getTime()) {
          this.endDate = new Date(moment().format('YYYY/MM/DD HH:00'));
        } else {
          this.endDate = endDate;
        }
      }
    }
  };
  /**
   * 获取表格数据
   */
  getTableHeadData = () => {
    const dataObj = {
      siteCode: this.siteCode,
      rangeCode: this.rangeCode,
      dataType: this.timeDataType,
      tableDataType: 'tableHead',
      type: this.tableType,
      startTime: this.startDate ? moment(this.startDate).format('YYYY-MM-DD HH:00:00') : '',
      endTime: this.endDate ? moment(this.endDate).format('YYYY-MM-DD HH:00:00') : '',
      limit: 1
    };
    this.vocsoriginService.getTableHeadData(dataObj).subscribe(
      result => this.responseUtil.success(result, this.handleHeadData),
      error => this.responseUtil.error(error)
    )
  };
  handleHeadData = (result) => {
    if (result && result.code === MsgConstants.MSG_CODE_OK) {
      if (result.data && result.data.nameList && result.data.nameList.length > 0) {
        this.factorDataArr = result.data.nameList;
        this.factorDataObj[this.tableType] = result.data.nameList;
      }
      if (!this.table) {
        this.loadVocsOri();
      } else {
        this.tableUtil.refreshOptions({columns: this.addColumns(), pageNumber: 1});
      }
    } else {
      this.dialogService.info(result.message);
    }
  };
  /**
   * 导出
   */
  exportExcel = () => {
    const params = {
      siteCode: this.siteCode,
      type: this.tableType,
      dataType: this.timeDataType,
      startTime: this.startDate ? moment(this.startDate).format(this.timeDataFormat) : '',
      endTime: this.endDate ? moment(this.endDate).format(this.timeDataFormat) : '',
      limit: 100000
    };
    this.vocsoriginService.getExcel(params).subscribe(
      result => this.processExport(result),
      error => this.responseUtil.error(error)
    )
  };
  processExport(result) {
    const blob = new Blob([result]);
    const reader = new FileReader();
    reader.readAsText(blob, 'utf-8');
    reader.onload = (e) => {
      if (reader.result) {
        if (reader.result.indexOf('code') !== -1) {
          const resultObj = JSON.parse(reader.result);
          if (!this.responseUtil.preSuccess(resultObj)) {
            this.dialogService.info(resultObj.message)
          }
        } else {
          let timeType = '';
          this.timeDataArr.every((val) => {
            if (val.dataType === this.timeDataType) {
              timeType = val.name;
              return false;
            } else {
              return true;
            }
          });
          const filename = (this.startDate ? moment(this.startDate).format('YYYYMMDDHH') : '')
            + '_'
            + (this.endDate ? moment(this.endDate).format('YYYYMMDDHH') : '')
            + '_VOCs'
            + timeType + '数据'
            + '.xlsx';
          this.saveAs(blob, filename);
        }
      }
    }
  };
  /**
   * 保存
   * @param  {Blob} blob
   * @param  {String} filename 想要保存的文件名称
   */
  saveAs = (blob, filename) => {

    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob, filename);
    } else {
      const link = document.createElement('a');
      const body = document.querySelector('body');

      link.href = window.URL.createObjectURL(blob);
      link.download = filename;

      // fix Firefox
      link.style.display = 'none';
      body.appendChild(link);

      link.click();
      body.removeChild(link);

      window.URL.revokeObjectURL(link.href);
    }
  };
}
